package IO.ZIP;

import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

//不能压缩文件夹
public class ZIPFiles {
    /**
     * 压缩多个文件，压缩后的所有文件在同一目录下
     *
     * @param zipFileName 压缩后的文件名
     * @param files 需要压缩的文件列表
     * @throws IOException IO异常
     * @class ZipEntry 此类用于表示ZIP文件条目。
     */


    public static void ZipFiles(String zipFileName, File... files) throws IOException {
        ZipOutputStream zipOutputStream = null;
        try {
            // 输出流
            zipOutputStream = new ZipOutputStream(new FileOutputStream(zipFileName));
            // 遍历每一个文件，进行输出
            for (File file : files) {
                //开始编写新的ZIP文件条目，并将流定位到条目数据的开头。
                zipOutputStream.putNextEntry(new ZipEntry(file.getName()));//创建具有指定名称的新的zip条目。
                //通过打开与实际文件的连接创建一个 FileInputStream ，该文件由文件系统中的 File对象 file命名。
                FileInputStream fileInputStream = new FileInputStream(file);
                int readLen;
                byte[] buffer = new byte[1024];
                while ((readLen = fileInputStream.read(buffer)) != -1) {
                    zipOutputStream.write(buffer, 0, readLen);
                }
                // 关闭流
                fileInputStream.close();
                zipOutputStream.closeEntry();
            }
        } finally {
            if (null != zipOutputStream) {
                try {
                    zipOutputStream.close();
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        }
    }




        public static void main (String[]args) throws IOException {
                //将F盘下的form.txt和z2.docx压缩为form2.zip
            ZipFiles("F:/form2.zip", new File("F:/form.txt"),new File("F:/z2.docx"));
        }
    }
